Event recording (tracing) schemes are generally available in many commercially available operating systems. Tracing is quite useful for analysis of the performance of a program, such as an operating system, and for debugging the program. Essentially, tracing is the recording of specified events occurring within a program, which typically consists of pieces of information identifying "what" and "when" whenever an event occurs. Upon the occurrence of a specified event, a call is made to record the traced event within a trace buffer that has been set up, or initialized, to serially record the information in an efficient manner. Since it is desired to record as many events as possible, there is a need to be efficient with the amount of information recorded; otherwise, the trace buffer can fill quite quickly.
FIG. 3 illustrates an example of a typical entry within a trace buffer. The information recorded will include the type 301 of event for which an entry was recorded, a timestamp 302 indicating when the event occurred relative to other events, and some specified data 303 that relates to the event.
The events are collected over a period of time into the trace buffer and then submitted to a postprocessor for analysis. There are many types of analysis possible, but the most typical relates to the amount of time traversed from one type of an event to another (by using the timestamp field to measure elapsed time).
However, such analyses have limits as to what can be observed and evaluated from the trace data. Therefore, there is a need in the art to analyze the performance of a program from a perspective that is user selectable to provide for more variety in how a program's behavior can be studied.